﻿Imports Dainfo.ControleEstoque.Model
Imports System.Globalization
Imports Dainfo.ControleEstoque.Dados

Partial Public Class Venda
    Inherits System.Web.UI.Page

    Private _key As String = "Itens"

    Public Property ListItens() As List(Of ItensVenda)
        Get
            If ViewState(_key) Is Nothing Then
                ViewState(_key) = New List(Of ItensVenda)
            End If

            Return ViewState(_key)
        End Get
        Set(ByVal value As List(Of ItensVenda))
            ViewState(_key) = value
        End Set
    End Property


    Public ReadOnly Property Total() As Double
        Get
            Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("pt-BR")
            Dim precoTotal As Double = 0
            For Each it As ItensVenda In ListItens
                precoTotal = precoTotal + (it.Produto.ValorVenda * it.Quantidade)
            Next
            Return precoTotal
        End Get
    End Property




    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            CarregaDDLs()
        End If
    End Sub


    Sub CarregaDDLs()

        ddlMeioVenda.Items.Add("")
        ddlMeioVenda.Items.Add(New ListItem(MeioVenda.MercadoLivre.ToString(), CType(MeioVenda.MercadoLivre, Integer).ToString()))
        ddlMeioVenda.Items.Add(New ListItem(MeioVenda.Presencial.ToString(), CType(MeioVenda.Presencial, Integer).ToString()))
        ddlMeioVenda.Items.Add(New ListItem(MeioVenda.Site.ToString(), CType(MeioVenda.Site, Integer).ToString()))

        ddlFormaPagamento.Items.Add("")
        ddlFormaPagamento.Items.Add(New ListItem(FormaPagamento.Cartao.ToString(), CType(FormaPagamento.Cartao, Integer).ToString()))
        ddlFormaPagamento.Items.Add(New ListItem(FormaPagamento.Cheque.ToString(), CType(FormaPagamento.Cheque, Integer).ToString()))
        ddlFormaPagamento.Items.Add(New ListItem(FormaPagamento.Deposito.ToString(), CType(FormaPagamento.Deposito, Integer).ToString()))
        ddlFormaPagamento.Items.Add(New ListItem(FormaPagamento.Dinheiro.ToString(), CType(FormaPagamento.Dinheiro, Integer).ToString()))


    End Sub


    Protected Sub DropDownList2_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlMeioVenda.SelectedIndexChanged

    End Sub

    Protected Sub btnAdicionarIten_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdicionarIten.Click
        Dim iten As New ItensVenda()

        Dim produto As New Produto()
        produto.Codigo = ddlProdutos.SelectedValue
        produto = New DadosProduto().GetById(produto.Codigo)
        iten.Produto = produto
        iten.Quantidade = txtQuantidade.Text

        If ListItens.Find(Function(i) i.Produto.Codigo = produto.Codigo) Is Nothing Then
            ListItens.Add(iten)
        Else
            lblMessage.Text = "Esse produto já foi inserido."
        End If


        RefreshGridViewItens()

    End Sub


    Sub RefreshGridViewItens()
        gvItens.DataSource = ListItens
        gvItens.DataBind()
    End Sub

    Protected Sub btnSalvar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSalvar.Click

        Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("pt-BR")


        Dim venda As New Model.Venda()
        venda.Cliente = New Cliente()
        venda.Cliente.Codigo = ddlClientes.SelectedItem.Value
        venda.Cliente.Nome = ddlClientes.SelectedItem.Text
        venda.FormaPagamento = CType(ddlFormaPagamento.SelectedValue, FormaPagamento)
        venda.MeioDeVenda = CType(ddlMeioVenda.SelectedValue, MeioVenda)
        venda.Data = Convert.ToDateTime(txtData.Text)
        venda.Itens.AddRange(ListItens)

        Dim dadosVenda As New Dados.DadosVenda()
        dadosVenda.Insert(venda)

        Response.Redirect("ConsultarVendas.aspx")
    End Sub

    Protected Sub gvItens_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvItens.RowDeleting
        ListItens.RemoveAt(gvItens.Rows(e.RowIndex).DataItemIndex)
        RefreshGridViewItens()
    End Sub

    Protected Sub btnSalvar0_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSalvar0.Click
        Dim cliente As New Cliente()
        cliente.Nome = txtNome.Text
        cliente.CPF_CNPJ = txtCPF_CNPJ.Text
        cliente.Endereco = ""
        cliente.Bairro = ""
        cliente.Cidade = ""
        cliente.Estado = ""
        cliente.CEP = ""
        cliente.Telefone1 = ""
        cliente.Telefone2 = ""
        cliente.Email = txtEmail.Text
        cliente.Observacoes = ""
        cliente.Messenger = txtMsn.Text



        Dim dadosCliente As New DadosCliente()
        dadosCliente.Insert(cliente)
        ddlClientes.DataBind()

        Dim li As ListItem = ddlClientes.Items.FindByText(cliente.Nome)
        If Not li Is Nothing Then li.Selected = True

        txtNome.Text = ""
        txtCPF_CNPJ.Text = ""
        txtEmail.Text = ""
        txtMsn.Text = ""

        LinkButton1_ModalPopupExtender.Hide()
    End Sub

    Protected Sub btnCancelar0_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCancelar0.Click
        LinkButton1_ModalPopupExtender.Hide()
    End Sub
End Class